package com.yeban.javase.day18.test.test3;

/**
 * @Desc TODO
 * @Author yeban
 * @Date 2025/11/2
 *
 * 线程安全的单例设计模式
 * 静态内部类
 * DCL （ Double Check Lock ）
 */
public class SingletonDCLSec {

    private static SingletonDCLSec instance;

    private SingletonDCLSec() {
        // 这里标明是谁在调用构造方法
        System.out.println("构造方法执行 -> " + Thread.currentThread().getName());
    }

    private static class InnerClass {
        static SingletonDCLSec instance = new SingletonDCLSec();
    }

    public static SingletonDCLSec getInstance(){
        if (instance == null) { // 第二次检查（确保线程安全）
            instance = new SingletonDCLSec();
        }
        return SingletonDCLSec.instance;
    }
}
